home *** CD-ROM | disk | FTP | other *** search
/ Risc World 5 / Risc World 5.iso / SOFTWARE / Issue5 / PD / DIRSYNC / LegalStuff / ccres / c / Error < prev    next >
Text File  |  2004-03-20  |  2KB  |  98 lines

  1. /* Error.c
  2.    $Id: Error.c,v 1.2 2004/03/20 22:12:22 joty Exp $
  3.  
  4.    Copyright (c) 2003-2004 Dave Appleby / John Tytgat
  5.  
  6.    This file is part of CCres.
  7.  
  8.    CCres is free software; you can redistribute it and/or modify
  9.    it under the terms of the GNU General Public License as published by
  10.    the Free Software Foundation; either version 2 of the License, or
  11.    (at your option) any later version.
  12.  
  13.    CCres is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.    GNU General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with CCres; if not, write to the Free Software
  20.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  21.  */
  22.  
  23. #include "ccres.h"
  24.  
  25. #include <stdio.h>
  26. #include <string.h>
  27.  
  28.  
  29. // return value is zero based index of keys passed in pszKeys
  30. int question(PSTR pszKeys, bits nErr, PSTR pszFmt, ...)
  31. {
  32.     os_error err;
  33.     va_list list;
  34.  
  35.     err.errnum = nErr;
  36.     va_start(list, pszFmt);
  37.     vsprintf(err.errmess, pszFmt, list);
  38.     va_end(list);
  39.     return(wimp_report_error_by_category(
  40.                 &err,
  41.                 wimp_ERROR_BOX_NO_PROMPT |
  42.                 wimp_ERROR_BOX_SHORT_TITLE |
  43.                 wimp_ERROR_BOX_GIVEN_CATEGORY |
  44.                 (wimp_ERROR_BOX_CATEGORY_QUESTION << wimp_ERROR_BOX_CATEGORY_SHIFT),
  45.                 achProgName,
  46.                 "!"APPNAME,
  47.                 (osspriteop_area *) 1,        // wimp pool
  48.                 pszKeys) - 3);                // ignore standard buttons
  49. }
  50.  
  51. void toolbox_error(PDATA data)
  52. {
  53.     if (question("Continue,Quit", data->poll.ta.data.error.errnum,  data->poll.ta.data.error.errmess) == 1) {
  54.         data->fRunning = FALSE;
  55.     }
  56. }
  57.  
  58.  
  59. void oserr(os_error * err)
  60. {
  61.     wimp_report_error(err, wimp_ERROR_BOX_OK_ICON | wimp_ERROR_BOX_NO_PROMPT, achProgName);
  62. }
  63.  
  64.  
  65. void error(PSTR pszFmt, ...)
  66. {
  67.     os_error err;
  68.     va_list list;
  69.  
  70.     err.errnum = 0;
  71.     va_start(list, pszFmt);
  72.     vsprintf(err.errmess, pszFmt, list);
  73.     va_end(list);
  74.     oserr(&err);
  75. }
  76.  
  77.  
  78. void errtitle(PSTR pszTitle, PSTR pszError)
  79. {
  80.     os_error err;
  81.  
  82.     err.errnum = 0;
  83.     strncpy(err.errmess, pszError, sizeof(err.errmess) - 2);
  84.     wimp_report_error(&err, (wimp_ERROR_BOX_OK_ICON | wimp_ERROR_BOX_NO_PROMPT | wimp_ERROR_BOX_SHORT_TITLE), pszTitle);
  85. }
  86.  
  87.  
  88. #ifdef DEBUG
  89. void errnum(PSTR pszError, int num)
  90. {
  91.     os_error err;
  92.  
  93.     err.errnum = 0;
  94.     sprintf(err.errmess, "%.32s (%d)", pszError, num);
  95.     oserr(&err);
  96. }
  97. #endif
  98.